package com.neusoft.db;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.neusoft.bean.AdminInfoBean;
import com.neusoft.myutils.MyUtil;



public class DBProvider {
	/*
	 * 整合方法参见：
	 * https://gitee.com/climpeaker2/chj_webproject0627.git
	 * 中的db层
	 */
	
	/**
	 * 
	 * 使用dbutils查询数据库(执行select语句)
	 * 
	 * @param sql
	 * 			查询sql语句
	 * @param rsh
	 * 			结果集类型
	 * @param params
	 * 			sql语句查询参数
	 * @return 查询结果集
	 */
	public <T> T query(String sql,ResultSetHandler<T> rsh,Object... params) {
		//返回值
		T result = null;
		try {
			//创建一个查询对象 queryrunner
			QueryRunner qr = new QueryRunner(DBDataSource.getDataSourceInstance(), true);
			
			//进行查询操作
			result = qr.query(sql, rsh,params);
		} catch (SQLException e) {
			//dbutils查询数据库异常
			MyUtil.logRootLogger.debug("dbutils查询数据库异常：");
			e.printStackTrace();
			
		}
		return result;
	}
	
 /**
 * 使用dbutils执行增、删、改操作
 * 
 * @param sql
 *			sql语句 	
 * @param params
 * 			sql语句查询参数
 * @return 增、删、改数据库所影响的记录条数
 */
public int update(String sql,Object... params) {
		//默认返回值
		int result = 0;
		try {
			//创建一个查询对象
			QueryRunner qr = new QueryRunner(DBDataSource.getDataSourceInstance(), true);
			//进行sql操作
			result = qr.update(sql, params);
			
		} catch (SQLException e) {
			//dbutils增、删、改数据库异常
			MyUtil.logRootLogger.debug("dbutils增、删、改数据库异常：");
			e.printStackTrace();
		}

		return result;	
	}
	//测试数据库
//	public static void main(String[] args) {
//		String sql = "select * from admininfo where adminname ='admin' and adminpsw='admin'";
//		List<AdminInfoBean> lst = DBFactory.getDBProviderInstance().query(
//				sql, new BeanListHandler<>(AdminInfoBean.class));
//		System.out.println(lst);
//	}
}
